﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using liclSolcred.Views;
using com.creditos.be.liclSolcred;
using com.creditos.util.liclUtil;
using com.creditos.be.liclUtil;

public partial class solcred_FormsManEstrategiasCredito : CreditosPaseBase, IFormsEstrategiasCreditoView
{
    private liclSolcred.Views.FormsEstrategiasCreditoPresenter oPresenter = new FormsEstrategiasCreditoPresenter();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
        {
            oPresenter.View = this;
            Master.TituloModulo = "Registro Estrategias Crédito";
            oPresenter.ListarProductos(new ProductoBE());
            InsertarSeleccione();
            oPresenter.Load();
            UCBarraHerramientas1.btnGuardar.Visible = true;
            UCBarraHerramientas1.btnCancelar.Visible = true;
            txtDescripcionEstrategia.Attributes.Add("onkeypress", " ValidarCaracteres(this, 80);");
            txtDescripcionEstrategia.Attributes.Add("onkeyup", " ValidarCaracteres(this, 80);");
            txtDesde.Text = "0";
            txtHasta.Text = "0";
            if (Request.QueryString["Accion"] == "2")
            {
                EstrategiasCreditoBE oEstrategia = new EstrategiasCreditoBE();
                oEstrategia.Accion = 1;
                oEstrategia.CodigoEstrategia = int.Parse((string)Session["CodigoEstrategia"]);
                oPresenter.ObtenerEstrategia(oEstrategia);
            }
        }
        oPresenter.View = this;
    }

    protected override void DefineHandlers()
    {
        ddlProducto.SelectedIndexChanged += new EventHandler(ddlProducto_SelectedIndexChanged);
        UCBarraHerramientas1.btnGuardar.Click += new EventHandler(btnGuardar_Click);
        UCBarraHerramientas1.btnCancelar.Click += new EventHandler(btnCancelar_Click);

    }

    public void ddlProducto_SelectedIndexChanged(object sender, EventArgs e)
    {
        ProductoBE oProducto = new ProductoBE();
        oProducto.CodigoProducto = int.Parse(Utilitario.DarFormatoEnteroCero(ddlProducto.SelectedValue));
        oPresenter.ListarSubProductos(oProducto);

    }

    public void InsertarSeleccione()
    {
        List<Control> lstControles = new List<Control>();
        lstControles = Utilitario.ListarControles(Page, 2);
        foreach (Control item in lstControles)
        {
            UIBindable.InsertarSeleccionar((DropDownList)item);
        }
    }

    void btnGuardar_Click(object sender, EventArgs e)
    {
        decimal intDesde = txtDesde.Text == string.Empty ? 0 : decimal.Parse(txtDesde.Text);
        decimal intHasta = txtHasta.Text == string.Empty ? 0 : decimal.Parse(txtHasta.Text);

        decimal intMinimoSolesImporte = txtMinimoSolesImporte.Text == string.Empty ? 0 : decimal.Parse(txtMinimoSolesImporte.Text);
        decimal intMaximoSolesImporte = txtMaximoSolesImporte.Text == string.Empty ? 0 : decimal.Parse(txtMaximoSolesImporte.Text);

        decimal intMinimoDolaresImporte = txtMinimoDolaresImporte.Text == string.Empty ? 0 : decimal.Parse(txtMinimoDolaresImporte.Text);
        decimal intMaximoDolaresImporte = txtMaximoDolaresImporte.Text == string.Empty ? 0 : decimal.Parse(txtMaximoDolaresImporte.Text);

        int intMinimoPlazo = txtMinimoPlazo.Text == string.Empty ? 0 : int.Parse(txtMinimoPlazo.Text);
        int intMaximoPlazo = txtMaximoPlazo.Text == string.Empty ? 0 : int.Parse(txtMaximoPlazo.Text);
                                
        if (txtDescripcionEstrategia.Text == string.Empty)
        {
            MostrarMensajeError("Debe ingresar una descripción para la estrategia");
        }
        else if (ddlProducto.SelectedIndex == 0)
        {
            MostrarMensajeError("Debe seleccionar un producto");
        }
        else if (ddlSubProducto.SelectedIndex == 0)
        {
            MostrarMensajeError("Debe seleccionar un subproducto");
        }        
        else if(intDesde > intHasta)
        {
            MostrarMensajeError("Nivel de Ingreso desde debe ser menor al nivel de ingreso hasta");
        }        
        else if (intMinimoSolesImporte > intMaximoSolesImporte)
        {
            MostrarMensajeError("Importe mínimo soles debe ser menor al importe máximo soles");
        }
        else if (intMinimoDolaresImporte > intMaximoDolaresImporte)
        {
            MostrarMensajeError("Importe mínimo dolares debe ser menor al importe máximo dolares");
        }
        else if (intMinimoPlazo > intMaximoPlazo)
        {
            MostrarMensajeError("Plazo mínimo debe ser menor al plazo máximo");
        } 
        else if (ddlParametrosBasicos.SelectedIndex == 0)
        {
            MostrarMensajeError("Debe seleccionar un parametro basico");
        } 
        else if (ddlPosicionBanco.SelectedIndex == 0)
        {
            MostrarMensajeError("Debe seleccionar posicion banco");
        }
        else if (ddlPosicionSBS.SelectedIndex == 0)
        {
            MostrarMensajeError("Debe seleccionar posicion SBS");
        }
        else if (ddlAutonomias.SelectedIndex == 0)
        {
            MostrarMensajeError("Debe seleccionar autonomias");
        }
        else if (ddlCentralRiesgo.SelectedIndex == 0)
        {
            MostrarMensajeError("Debe seleccionar central de riesgo");
        }
        else if (ddlLimiteCredito.SelectedIndex == 0)
        {
            MostrarMensajeError("Debe seleccionar Limite de Credito");
        }
        else if (ddlVerificaciones.SelectedIndex == 0)
        {
            MostrarMensajeError("Debe seleccionar Verificaciones");
        }
        else if (ddlRelacionCuotaIngreso.SelectedIndex == 0)
        {
            MostrarMensajeError("Debe seleccionar RCI");
        }
        else if (ddlScoring.SelectedIndex == 0)
        {
            MostrarMensajeError("Debe seleccionar Scoring");
        }
        else
        {           
            EstrategiasCreditoBE oEstrategias = new EstrategiasCreditoBE();
            oEstrategias.Accion = int.Parse(Request.QueryString["Accion"]);
            oEstrategias.CodigoEstrategia = txtCodigoEstrategia.Text == string.Empty ? 0 : int.Parse(txtCodigoEstrategia.Text);
            oEstrategias.DescripcionEstrategia = txtDescripcionEstrategia.Text.Trim();
            oEstrategias.CodigoProducto = int.Parse(Utilitario.DarFormatoEnteroCero(ddlProducto.SelectedValue.ToString()));
            oEstrategias.CodigoSubProducto = int.Parse(Utilitario.DarFormatoEnteroCero(ddlSubProducto.SelectedValue.ToString()));
            oEstrategias.RangoInicial = txtDesde.Text == string.Empty ? 0 : decimal.Parse(txtDesde.Text);
            oEstrategias.RangoFinal = txtHasta.Text == string.Empty ? 0 : decimal.Parse(txtHasta.Text);
            oEstrategias.CodigoParametroBasico = int.Parse(Utilitario.DarFormatoEnteroCero(ddlParametrosBasicos.SelectedValue.ToString()));
            oEstrategias.FlagParametroBasicoRequiere = chbParametrosBasicosRequerido.Checked ? 1 : 0;
            oEstrategias.FlagParametroBasicoObligado = chbParametrosBasicosObligatorio.Checked ? 1 : 0;
            oEstrategias.CodigoCentralRiesgo = int.Parse(Utilitario.DarFormatoEnteroCero(ddlCentralRiesgo.SelectedValue.ToString()));
            oEstrategias.FlagCentralRiesgoRequiere = chbCentralRiesgoRequerido.Checked ? 1 : 0;
            oEstrategias.FlagCentralRiesgoObligado = chbCentralRiesgoObligatorio.Checked ? 1 : 0;            
            oEstrategias.FlagParametroBasicoObligado = chbParametrosBasicosObligatorio.Checked ? 1 : 0;
            oEstrategias.CodigoVerificacion = int.Parse(Utilitario.DarFormatoEnteroCero(ddlVerificaciones.SelectedValue.ToString()));
            oEstrategias.FlagVerificacionRequiere = chbVerificacionesRequerido.Checked ? 1 : 0;
            oEstrategias.FlagVerificacionObligado = chbVerificacionesObligatorio.Checked ? 1 : 0;
            oEstrategias.CodigoPosicionCliente = int.Parse(Utilitario.DarFormatoEnteroCero(ddlPosicionBanco.SelectedValue.ToString()));
            oEstrategias.FlagPosicionClienteRequiere = chbPosicionBancoRequerido.Checked ? 1 : 0;
            oEstrategias.FlagPosicionClienteObligado = chbPosicionBancoObligatorio.Checked ? 1 : 0;
            oEstrategias.CodigoAutonomia = int.Parse(Utilitario.DarFormatoEnteroCero(ddlAutonomias.SelectedValue.ToString()));
            oEstrategias.CodigoScoring = int.Parse(Utilitario.DarFormatoEnteroCero(ddlScoring.SelectedValue.ToString()));
            oEstrategias.CodigoLimiteCredito = int.Parse(Utilitario.DarFormatoEnteroCero(ddlLimiteCredito.SelectedValue.ToString()));
            oEstrategias.CodigoRelacionCuotaIngreso = int.Parse(Utilitario.DarFormatoEnteroCero(ddlRelacionCuotaIngreso.SelectedValue.ToString()));
            oEstrategias.CodigoPosicionSBS = int.Parse(Utilitario.DarFormatoEnteroCero(ddlPosicionSBS.SelectedValue.ToString()));
            oEstrategias.FlagPosicionSBSRequiere = chbPosicionSBSRequerido.Checked ? 1 : 0;
            oEstrategias.FlagPosicionSBSObligadoField = chbPosicionSBSObligatorio.Checked ? 1 : 0;
            oEstrategias.ValPlazoMinimo = txtMinimoPlazo.Text == string.Empty ? 0 : int.Parse(txtMinimoPlazo.Text);
            oEstrategias.ValPlazoMaximo = txtMaximoPlazo.Text == string.Empty ? 0 : int.Parse(txtMaximoPlazo.Text);
            oEstrategias.ValorImporteMinimoSoles = txtMinimoSolesImporte.Text == string.Empty ? 0 : decimal.Parse(txtMinimoSolesImporte.Text);
            oEstrategias.ValorImporteMinimoDolar = txtMinimoDolaresImporte.Text == string.Empty ? 0 : decimal.Parse(txtMinimoDolaresImporte.Text);
            oEstrategias.ValorImporteMaximoSoles = txtMaximoSolesImporte.Text == string.Empty ? 0 : decimal.Parse(txtMaximoSolesImporte.Text);
            oEstrategias.ValorImporteMaximoDolar = txtMaximoDolaresImporte.Text == string.Empty ? 0 : decimal.Parse(txtMaximoDolaresImporte.Text);
            oPresenter.ActualizarEstrategia(oEstrategias);

            if (Request.QueryString["Accion"]=="1")
                MostrarMensajeError("Registro ingresado exitosamente");
            else if (Request.QueryString["Accion"] == "2")
                MostrarMensajeError("Registro modificado exitosamente");
        }
    }

    void btnCancelar_Click(object sender, EventArgs e)
    {        
        Response.Redirect("FormsConEstrategiasCredito.aspx");
    }

    #region IFormsEstrategiasCreditoView Members

    public void CargarProductos(List<ProductoBE> lstProductos)
    {
        UIBindable.Bind(ddlProducto, lstProductos, "CodigoProducto", "DescripcionProducto");
    }

    public void CargarSubProductos(List<SubProductoBE> lstSubProductos)
    {
        UIBindable.Bind(ddlSubProducto, lstSubProductos, "CodigoSubProducto", "DescripcionSubProducto");
        UIBindable.InsertarSeleccionar(ddlSubProducto);
    }

    public void MostrarMensajeError(string strMensaje)
    {
        Master.MostrarMensaje(strMensaje, 0);
    }

    public void CargarEstrategias(List<EstrategiasCreditoBE> lstEstrategia)
    {
        if (lstEstrategia.Count > 0)
        {
            txtCodigoEstrategia.Text = lstEstrategia[0].CodigoEstrategia.ToString();
            txtEstado.Text = lstEstrategia[0].DescripcionEstado.ToString();
            txtFechaIngreso.Text = Utilitario.DarFormatoFecha(lstEstrategia[0].FechaRegistro.ToString());
        }
    }

    public void CargarListaPlantillaPorTipo(List<EstrategiasCreditoBE> lstEstrategia, int intTipoPlantilla)
    {
        switch (intTipoPlantilla)
        {

            case 1:
                UIBindable.Bind(ddlAutonomias, lstEstrategia, "CodigoListaPlantilla", "DescripcionListaPlantilla");
                UIBindable.InsertarSeleccionar(ddlAutonomias);
                break;
            case 2:
                UIBindable.Bind(ddlLimiteCredito, lstEstrategia, "CodigoListaPlantilla", "DescripcionListaPlantilla");
                UIBindable.InsertarSeleccionar(ddlLimiteCredito);
                break;
            case 3:
                UIBindable.Bind(ddlParametrosBasicos, lstEstrategia, "CodigoListaPlantilla", "DescripcionListaPlantilla");
                UIBindable.InsertarSeleccionar(ddlParametrosBasicos);
                break;
            case 4:
                UIBindable.Bind(ddlScoring, lstEstrategia, "CodigoListaPlantilla", "DescripcionListaPlantilla");
                UIBindable.InsertarSeleccionar(ddlScoring);
                break;
            case 5:
                UIBindable.Bind(ddlRelacionCuotaIngreso, lstEstrategia, "CodigoListaPlantilla", "DescripcionListaPlantilla");
                UIBindable.InsertarSeleccionar(ddlRelacionCuotaIngreso);
                break;
            case 6:
                UIBindable.Bind(ddlCentralRiesgo, lstEstrategia, "CodigoListaPlantilla", "DescripcionListaPlantilla");
                UIBindable.InsertarSeleccionar(ddlCentralRiesgo);
                break;
            case 7:
                UIBindable.Bind(ddlPosicionSBS, lstEstrategia, "CodigoListaPlantilla", "DescripcionListaPlantilla");
                UIBindable.InsertarSeleccionar(ddlPosicionSBS);
                break;
            case 8:
                UIBindable.Bind(ddlPosicionBanco, lstEstrategia, "CodigoListaPlantilla", "DescripcionListaPlantilla");
                UIBindable.InsertarSeleccionar(ddlPosicionBanco);
                break;
            case 9:
                UIBindable.Bind(ddlVerificaciones, lstEstrategia, "CodigoListaPlantilla", "DescripcionListaPlantilla");
                UIBindable.InsertarSeleccionar(ddlVerificaciones);
                break;
        }
    }
  
    public void ObtenerEstrategia(List<EstrategiasCreditoBE> lstEstrategia)
    {
        if (lstEstrategia.Count > 0) {            
            txtCodigoEstrategia.Text = lstEstrategia[0].CodigoEstrategia.ToString();
            txtDescripcionEstrategia.Text = lstEstrategia[0].DescripcionEstrategia;
            ddlProducto.SelectedValue = lstEstrategia[0].CodigoProducto.ToString();
            ProductoBE oProducto = new ProductoBE();
            oProducto.CodigoProducto = int.Parse(Utilitario.DarFormatoEnteroCero(ddlProducto.SelectedValue));
            oPresenter.ListarSubProductos(oProducto);
            ddlSubProducto.SelectedValue = lstEstrategia[0].CodigoSubProducto.ToString();
            txtDesde.Text = lstEstrategia[0].RangoInicial.ToString();
            txtHasta.Text = lstEstrategia[0].RangoFinal.ToString();
            ddlParametrosBasicos.SelectedValue = lstEstrategia[0].CodigoParametroBasico.ToString();
            if (lstEstrategia[0].FlagParametroBasicoRequiere == 1) chbParametrosBasicosRequerido.Checked = true; else chbParametrosBasicosRequerido.Checked = false;
            if (lstEstrategia[0].FlagParametroBasicoObligado == 1) chbParametrosBasicosObligatorio.Checked = true; else chbParametrosBasicosObligatorio.Checked = false;
            ddlCentralRiesgo.SelectedValue = lstEstrategia[0].CodigoCentralRiesgo.ToString();
            if (lstEstrategia[0].FlagCentralRiesgoRequiere == 1) chbCentralRiesgoRequerido.Checked = true; else  chbCentralRiesgoRequerido.Checked = false;
            if (lstEstrategia[0].FlagCentralRiesgoObligado == 1) chbCentralRiesgoObligatorio.Checked = true; else chbCentralRiesgoObligatorio.Checked = false;            
            ddlVerificaciones.SelectedValue = lstEstrategia[0].CodigoVerificacion.ToString();
            if (lstEstrategia[0].FlagVerificacionRequiere == 1) chbVerificacionesRequerido.Checked =true ; else chbVerificacionesRequerido.Checked = false;
            if (lstEstrategia[0].FlagVerificacionObligado == 1) chbVerificacionesObligatorio.Checked = true; else chbVerificacionesObligatorio.Checked = false;
            ddlPosicionBanco.SelectedValue = lstEstrategia[0].CodigoPosicionCliente.ToString();
            if (lstEstrategia[0].FlagPosicionClienteRequiere == 1) chbPosicionBancoRequerido.Checked = true; else chbPosicionBancoRequerido.Checked = false;
            if (lstEstrategia[0].FlagPosicionClienteObligado == 1) chbPosicionBancoObligatorio.Checked = true ; else  chbPosicionBancoObligatorio.Checked = false;
            ddlAutonomias.SelectedValue = lstEstrategia[0].CodigoAutonomia.ToString();
            ddlScoring.SelectedValue = lstEstrategia[0].CodigoScoring.ToString();
            ddlLimiteCredito.SelectedValue = lstEstrategia[0].CodigoLimiteCredito.ToString();
            ddlRelacionCuotaIngreso.SelectedValue = lstEstrategia[0].CodigoRelacionCuotaIngreso.ToString();            
            ddlPosicionSBS.SelectedValue = lstEstrategia[0].CodigoPosicionSBS.ToString();            
            if (lstEstrategia[0].FlagPosicionSBSRequiere == 1) chbPosicionSBSRequerido.Checked = true; else chbPosicionSBSRequerido.Checked = false;
            if (lstEstrategia[0].FlagPosicionSBSObligadoField == 1) chbPosicionSBSObligatorio.Checked = true; else chbPosicionSBSObligatorio.Checked = false;
            txtMinimoPlazo.Text = lstEstrategia[0].ValPlazoMinimo.ToString();
            txtMaximoPlazo.Text = lstEstrategia[0].ValPlazoMaximo.ToString();
            txtMinimoSolesImporte.Text = lstEstrategia[0].ValorImporteMinimoSoles.ToString();
            txtMinimoDolaresImporte.Text = lstEstrategia[0].ValorImporteMinimoDolar.ToString();
            txtMaximoSolesImporte.Text = lstEstrategia[0].ValorImporteMaximoSoles.ToString();
            txtMaximoDolaresImporte.Text = lstEstrategia[0].ValorImporteMaximoDolar.ToString();
            txtFechaIngreso.Text = lstEstrategia[0].FechaRegistro.ToShortDateString();
            txtEstado.Text = lstEstrategia[0].DescripcionEstado;
        }
    }

    #endregion
}
